package luke.audio.generation;



import java.io.File;
import java.util.List;

public class MusicGenerationParams {
    private List<File> filesToProcess; // 要处理的歌曲文件
    private double targetBpm; // 目标BPM
    private File outputDir; // 输出目录
    private File tempDir; // 临时目录
    private double plannedDuration; // 总时长（分钟）
    private float beatVolume; // 鼓点音量（0.0-1.0）
    private float backgroundVolume; // 背景音量（0.0-1.0）
    private int beatSoundType = 0;


    private String videoResolution; // 视频分辨率（如"1080p"）
    private boolean isLandscape; // 是否为横屏模式
    private String videoStyle; // 视频样式（"slideshow"或"spectrum"）
    private String generationType; // 生成类型（"single", "mix", "mix_video"）
    private int parallelTaskCount; // 并行任务数量
    private boolean truncateExceedingFiles; // 是否截断超出时长的文件
    private String videoTitle; // 视频标题

    public MusicGenerationParams(
            List<File> filesToProcess,// 歌曲列表
            double targetBpm, // 目标BPM
            File outputDir,// 输出目录
            File tempDir, // 临时目录
            double plannedDuration,// 总时长（分钟）
            float beatVolume, // 鼓点音量（0.0-1.0）
            float backgroundVolume, // 背景音量（0.0-1.0）
            int beatSoundType, // 鼓点声音类型（0-3）
            String videoResolution,// 视频分辨率（如"1080p"）
            boolean isLandscape, // 是否为横屏模式
            String videoStyle, // 视频样式（"slideshow"或"spectrum"）
            String generationType, // 生成类型（"single", "mix", "mix_video"）
            int parallelTaskCount,// 并行任务数量
            boolean truncateExceedingFiles,
            String videoTitle) { // 视频标题
        this.filesToProcess = filesToProcess;
        this.targetBpm = targetBpm;
        this.outputDir = outputDir;
        this.tempDir = tempDir;
        this.plannedDuration = plannedDuration;
        this.beatVolume = beatVolume;
        this.backgroundVolume = backgroundVolume;
        this.beatSoundType = beatSoundType;
        this.videoResolution = videoResolution;
        this.isLandscape = isLandscape;
        this.videoStyle = videoStyle;
        this.generationType = generationType;
        this.parallelTaskCount = parallelTaskCount;
        this.truncateExceedingFiles = truncateExceedingFiles;
        this.videoTitle = videoTitle;

    }


    public int getBeatSoundType() {
        return beatSoundType;
    }

    public void setBeatSoundType(int beatSoundType) {
        this.beatSoundType = beatSoundType;
    }

    // Getter 方法
    public List<File> getFilesToProcess() {
        return filesToProcess;
    }

    public double getTargetBpm() {
        return targetBpm;
    }

    public File getOutputDir() {
        return outputDir;
    }

    public File getTempDir() {
        return tempDir;
    }

    public double getPlannedDuration() {
        return plannedDuration;
    }

    public float getBeatVolume() {
        return beatVolume;
    }

    public float getBackgroundVolume() {
        return backgroundVolume;
    }

    public String getVideoResolution() {
        return videoResolution;
    }

    public boolean isLandscape() {
        return isLandscape;
    }

    public String getVideoStyle() {
        return videoStyle;
    }

    public String getGenerationType() {
        return generationType;
    }

    public int getParallelTaskCount() {
        return parallelTaskCount;
    }

    public boolean isTruncateExceedingFiles() {
        return truncateExceedingFiles;
    }

    public String getVideoTitle() {
        return videoTitle;
    }

    // Setter 方法（可选，根据需求决定是否提供）
    public void setFilesToProcess(List<File> filesToProcess) {
        this.filesToProcess = filesToProcess;
    }

    public void setTargetBpm(double targetBpm) {
        this.targetBpm = targetBpm;
    }

    public void setOutputDir(File outputDir) {
        this.outputDir = outputDir;
    }

    public void setTempDir(File tempDir) {
        this.tempDir = tempDir;
    }

    public void setPlannedDuration(double plannedDuration) {
        this.plannedDuration = plannedDuration;
    }

    public void setBeatVolume(float beatVolume) {
        this.beatVolume = beatVolume;
    }

    public void setBackgroundVolume(float backgroundVolume) {
        this.backgroundVolume = backgroundVolume;
    }

    public void setVideoResolution(String videoResolution) {
        this.videoResolution = videoResolution;
    }

    public void setLandscape(boolean landscape) {
        isLandscape = landscape;
    }

    public void setVideoStyle(String videoStyle) {
        this.videoStyle = videoStyle;
    }

    public void setGenerationType(String generationType) {
        this.generationType = generationType;
    }

    public void setParallelTaskCount(int parallelTaskCount) {
        this.parallelTaskCount = parallelTaskCount;
    }

    public void setTruncateExceedingFiles(boolean truncateExceedingFiles) {
        this.truncateExceedingFiles = truncateExceedingFiles;
    }

    public void setVideoTitle(String videoTitle) {
        this.videoTitle = videoTitle;
    }
}